package com.neusoft.ch10.collections;

import java.util.Iterator;
import java.util.List;
import java.util.Vector;

/*
 * 课堂笔记：
 * 一：集合
 * 1 集合
 *   是一类对象实例的组合；一堆对象的组合形式；
 *   集合中一般存储是对象类型；
 *   因为有多态，Object类是所有类的根类，所有各种类型的对象都可以放到一个Object类型的集合中；
 *   Object类型集合可以存放所有的类的实例对象；
 * 2 集合分类
 *   分为2大类：
 *      -Collection接口的子类：
 *          --List接口：
 *          --Set接口
 *      -Map接口的子类：  
 * 3 List集合
 *   list集合元素有下标，可以下标进行存取；
 *   list集合的长度可以动态改变；  
 *   list集合的底层实现有数组和链表两种形式；
 *       数组实现（ArrayList）：具有数组的特性；读取速度快；增删速度慢；
 *       链表实现（LinkedList）：具有链表的特性；读取速度慢，增删速度快；
 *   Vector是ArrayList和LinkedList的线程安全类；
 *       
 *   集合的遍历；
 *   list集合的元素是对象类型；所有list中也可以放list对象；（类似于二维数组）
 *   
 *   集合的特性：
 *       是否重复            是否可以为null            是否有序                             是否排序
 *         T             T                    T                 F
 *   注意：
 *      有序是指存入集合中的元素的顺序和遍历集合的元素的顺序一致，叫做有序；
 *      排序是指存入集合中的元素在遍历集合的元素时会按照某种排序规则进行排序，叫做排序；
 *   
 * 
 */
public class TestCh10 {

	public static void main(String[] args) {
		test01();
	}

	/**
	 * List集合
	 */
	private static void test01() {
		// 面向接口的编程
		List lst = new Vector();//new LinkedList();//new ArrayList();
		// 存入元素
		lst.add("xiaoming");
		lst.add("xiaoli"); // 基本类型默认转换为包装类类型
		lst.add("xiaozhao");
		lst.add("xiaozhao");
		lst.add(null);
		
		// 插入到制定下标的位置进行存储，插队方式存储
		lst.add(2, "xiaowang");
		// 遍历
		System.out.println("迭代器遍历方式：");
		// 获取集合的迭代器
		Iterator it = lst.iterator();
		// 使用hasNext判定有没有可以遍历的元素
		while (it.hasNext()) {
			// 取出当前遍历的元素
			Object obj = it.next();
			// 输出当前遍历的元素内容
			System.out.print("  " + obj);
		}
		// 换行
		System.out.println();

		System.out.println("for循环遍历：");
		for (int i = 0; i < lst.size(); i++) {
			// 取出当前遍历的元素
			Object obj = lst.get(i);
			// 输出当前遍历的元素内容
			System.out.print("  " + obj);
		}
		// 换行
		System.out.println();
		System.out.println("增强型的for循环遍历：");
		for (Object obj : lst) {
			// 输出当前遍历的元素内容
			System.out.print("  " + obj);
		}
	}

}
